Multiple flash storage commands may be simultaneously issued to flash firmware for execution. For example, hundreds of commands may be issued for execution at the same time. In general, flash storage commands may have complementary parameters, e.g., consecutive logical block addresses, independent flash locations, etc., that can be executed in parallel to improve system efficiency. Intelligent flash command ordering can therefore improve system efficiency.
Unfortunately, examining hundreds of issued flash commands is memory intensive and time consuming. Firmware generally does not have sufficient resources to examine all the issued flash commands at once.
One conventional system processes the issued commands in the order they are issued/received. Unfortunately, processing commands in the order they were issued/received may lead to inefficiencies within the system. For example, processing a command that is resource intensive, e.g., computationally intensive, with a few dependent commands instead of processing a command that is not resource intensive but does have multiple dependent commands may lead to inefficient command execution.
In one conventional system, a firmware may be equipped with limited reordering capability. For example, a number of commands may be reordered to improve system efficiency. Unfortunately, limited reordering may lead to unfair processing of commands. For example, limited command reordering may lead to execution of a newly loaded command from one port while many other older commands from other ports are allowed to languish. Therefore, limited command reordering may lead to command execution in an unfair manner.